"use client"; import { claimActivityReward, ContinuousCfgItem, ContinuousListItem, ContinuousResult, ContinuousRewardItem, getContinuousRechargeInfo, } from "@/api/activity"; import CutDown from "@/components/CutDown"; import GlobalNotify from "@/components/ModalPopup/GlobalNotifyModal"; import { ClaimActiveErrorMap } from "@/enums"; import { useRouter } from "@/i18n/routing"; import { formatAmount } from "@/utils/index"; import { Toast } from "antd-mobile"; import BigNumber from "bignumber.js"; import clsx from "clsx"; import { useTranslations } from "next-intl"; import { useSearchParams } from "next/navigation"; import React from "react"; import styles from "./page.module.scss"; interface ListItem { dayId: number; data: ContinuousListItem; } interface RewardItem { dayId: number; data: ContinuousRewardItem[]; } //"#297fcf" const DayItem = ({ data, idx, onClaim, onEnd, }: { data: ContinuousCfgItem; idx: number; onClaim: (data: ContinuousCfgItem) => void; onEnd?: Function; }) => { const dayColor = React.useMemo(() => { return ["#12940f", "#297fcf", "#ec3920"][idx % 3]; }, [idx]); const doClaim = () => { if (onClaim && typeof onClaim === "function") { onClaim(data); } }; return (
{data.id >= 2 && data.isCanClaim && (
Grande Prêmio Disponível
)} {!!data.end_at && (
)}
{data.days}
Recarga contínua por {data.days} dias
Recompensa de login
{data.is_sign === 0 ? "Recebido" : "Receber"}
); }; const Page = () => { const t = useTranslations(); const query = Object.fromEntries(useSearchParams()); const [data, setData] = React.useState({} as ContinuousResult); const router = useRouter(); const dayContainer = React.useRef(null); const [amount, setAmount] = React.useState({}); const [visible, setVisible] = React.useState(false); const act = React.useMemo(() => { if (!data || data.type === 11) return 0; return 1; }, [data]); React.useEffect(() => { getData(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [query.activity_id]); const getData = async () => { const res = await getContinuousRechargeInfo({ activity_id: Number(query.activity_id) }); if (res.code === 200) { setData(res.data); } }; const list = React.useMemo(() => { if (!data?.list?.list) { return []; } const result: ListItem[] = [] as ListItem[]; Object.keys(data?.list?.list).forEach((key: string) => { const item = data?.list?.list[key as any]; const key1 = Object.keys(item)[0]; result.push({ dayId: Number(key), data: item[key1 as any] }); }); return result.sort((a, b) => a.dayId - b.dayId); }, [data?.list?.list]); const reward_list = React.useMemo(() => { if (!data?.list?.reward_list) { return []; } const result: RewardItem[] = [] as RewardItem[]; Object.keys(data?.list?.reward_list).forEach((key: string) => { const item = data?.list?.reward_list[key as any]; const res2: ContinuousRewardItem[] = []; Object.keys(item).forEach((key2: string) => { const item2 = item[key2 as any]; res2.push(item2); }); result.push({ dayId: Number(key), data: res2 }); }); return result; }, [data?.list?.reward_list]); const waitList = React.useMemo(() => { if (!data?.list?.config_list) return []; const result = [] as ContinuousCfgItem[]; data?.list?.config_list.forEach((item) => { if ( item.is_sign === 0 || item.is_suss === 1 || !(item.start_at * 1000 < Date.now() && item.end_at * 1000 > Date.now()) ) { item.isCanClaim = false; } else { item.isCanClaim = true; } result.push(item); }); return result.sort((a, b) => a.days - b.days); }, [data?.list?.config_list]); const goDeposit = () => { router.push("/deposit"); }; const doClaim = async (data: ContinuousCfgItem) => { if (!query.activity_id) { Toast.show({ content: "Missing activity ID" }); return; } if (!data.is_sign) return; try { const res = await claimActivityReward({ activity_id: Number(query.activity_id), id: data.days, }); if (res.code === 200 && res?.data?.code === 1) { const amountObj: any = {}; if (res?.data?.reward) { res?.data?.reward.forEach((item: any) => { amountObj[`coin_${item.coin_type}`] = formatAmount(item.amount); }); } if (res?.data?.extra_reward) { res?.data?.extra_reward.forEach((item: any) => { amountObj[`coin_${item.coin_type}`] = formatAmount( new BigNumber(amountObj[`coin_${item.coin_type}`] || 0) .plus(item.amount) .toString() ); }); } if (Object.keys(amountObj).length > 0) { setVisible(true); setAmount(amountObj); } getData(); } else { throw new Error(ClaimActiveErrorMap.get(res.data.code) || t(`code.400`)); } } catch (error: any) { if (error) { Toast.show({ content: error.message || error.toString(), maskClickable: false, }); } } }; const doGoLinkActivity = (type: 11 | 13) => { if (type === data.type || !data.associated_activity_id) return; router.replace({ pathname: "/rechargeproxy", query: { activity_id: data.associated_activity_id }, }); }; return (
{act === 0 && (
RECARGA
)}
doGoLinkActivity(11)} > Meu login
doGoLinkActivity(13)} > Login de amigo
{!!list?.length && (
{list.map((item, idx) => { return (
Para ser
concluído
recarga
{item.data.pay_num}
Dia {item.dayId}
); })}
)} {/* {!!list?.length && (
{list.map((item: any) => { return (
{item.dayId} dia
{item.dayId} dia
recarga
{item?.data?.pay_num}
); })}
)} */} {!!waitList.length && (
{act === 1 && (
AMIGO ENTRAR PARA
RECEBER CORTESIA
)} {act === 0 && (
ENTRAR E RECEBER CORTESIA
)}
{waitList.map((item, idx: number) => { return ( ); })}
)}
Dias de
depósito
Requisitos da
atividade
{data.type === 11 && (
Valor do
bônus
)} {data.type === 13 && (
Recompensas
de Agente
)}
{reward_list.map((item) => { return (
Recarga contínua por{" "}
{item.dayId}dias
{item.data.map((item2, idx) => { return (
Mais de {item2.target_num} por dia
{item2.target_reward}
); })}
); })}
Regras de Atividade
  • Os prémios são reclamados no mesmo dia das 23:00 às 23:50
  • O bônus desta promoção deve ser solicitado dentro do período promocional. Solicitações feitas após o prazo serão consideradas como desistência automática.
  • Ao participar desta promoção, você concorda em cumprir os Termos e Regras da Promoção.
Termos e Condições
  • Todas as ofertas são liquidadas em reais (BRL - R$) e seguem o horário oficial de Brasília.
  • Cada jogador, domicílio, endereço, e-mail, número de telefone, método de pagamento (mesmo cartão de débito/crédito ou conta bancária) e endereço IP são utilizados para verificação.
  • Caso seja identificado que qualquer grupo ou indivíduo esteja abusando dos benefícios oferecidos pela empresa, esta reserva-se o direito de suspender ou cancelar o saldo do grupo envolvido.
setVisible(false)} deraction={5000} >
); }; export default Page;